package cn.bonoon.kernel.web;

/**
 * 所有使用VM模板的都应该使用本接口，用于管理vm上的内容
 * @author jackson
 * @since 3.2
 */
public interface LayoutContext {
	
	/**
	 * <pre>
	 * 访问资源，资源包括：js,css,images等所有可用的静态资源
	 * 从新的版本开始，这些资源可以被配置到本地，也可以被配置在某个资源服务器
	 * 
	 * 例如：如果配置文件里没有配置，则使用本地资源，默认情况是{@link javax.servlet.http.HttpServletRequest request.getContextPath()}
	 * 如果配置了资源服务器，如：http://resources.bonoon.cn，则所有的资源都会以配置的服务器开头
	 * 
	 * <font color="red">注意：相对路径的资源除名，所以如果是使用公共资源的话，则都需要以"/"开头。</font>
	 * </pre>
	 * @param resourceName 需要访问的资源文件
	 * @return 资源文件所在的可访问的路径或URL
	 */
	String resource(String resourceName);
	
	/**
	 * <pre>
	 * 只使用本地资源，如果没有配置资源服务器，则与{@link #resource(String)}方法的资源相同
	 * </pre>
	 * @param localResource 本地资源路径
	 * @return 可访问的本地资源
	 */
	String local(String localResource);
	
	/**
	 * <pre>
	 * 设置当前页面的警告信息
	 * 
	 * 当某个页面进入时需要提示一些警告信息的，如：某个事项的办理已经到期，等
	 * 页面的实现可以是以弹出对话框或顶部或底部等位置进行提示。
	 * </pre>
	 * @param warnMessage 当前页面设置的警告信息
	 */
	void setWarnMessage(String warnMessage);
	
	/**
	 * 获取当前页面的警告信息。详细信息请查看{@link #setWarnMessage(String)}
	 * @return 当前页面设置的警告信息
	 */
	String getWarnMessage();
	
	/**
	 * 取得一个整数的参数
	 * @param name 参数名
	 * @return 整数值
	 */
	int intParameter(String name);
	
	/**
	 * 取得一个整数的参数
	 * @param name 参数名
	 * @return 整数值
	 */
	Integer getInteger(String name);

	/**
	 * 取得一个长整数的参数
	 * @param name 参数名
	 * @return 长整数值
	 */
	long longParameter(String name);

	/**
	 * 取得一个长整数的参数
	 * @param name 参数名
	 * @return 长整数值
	 */
	Long getLong(String name);
	
	String getParameter(String name);
	String[] getParameters(String name);
}
